#include "execute_task.h"

TaskHandle_t executeHandler;
void showContrl();
void alarmContrl();
void airContrl();
void curtainContrl(); 
//采集的数据
extern TargetGatherData targetData;//调用其他文件夹的结构体
THData thData;

//用来去书写 心跳任务需要外设进行初始化
//执行模块初始化
void init_execute(){
    //1.后面还有配置模块，当前配置模块已经把数据加载好了，此处就直接使用
    //2.阈值数据和功能控制开关 都自己给一些默认值
    if(thData.state==0){

    
    thData.humiMax=200;
    thData.humiMin=-20;
    thData.smoke=100;
    thData.state=15;//十六进制0000 1111 等于15
    thData.sunshine=100;
    thData.tempMax=200;
    thData.tempMin=-20;
    }
    //对可能要使用到的外设做初始化
    ledInit();//led灯
    beepInit();//蜂鸣器
    OLED_Init();//液晶显示器
}

//执行模块的任务
void execute_task(void* param){
    while (1)
    {
        //判断用户要做哪些控制
        if (thData.state&(0x01))//进行显示0000 0001
        {
            showContrl();
        }
        if (thData.state&(0x02))//进行告警0000 0010
        {
            alarmContrl();
        }
        if (thData.state&(0x04))//进行空调0000 0100

        {
            void airContrl();  
        }
        if (thData.state&(0x08))//进行窗帘0000 1000
        {
            void curtainContrl(); 
        }
            
    }
    
}


//用来创建一个任务 ，心跳任务
void createExecuteTask(){
    xTaskCreate(execute_task,
    "execute_task",
    128,
    NULL,
    2,
    &executeHandler
    );
}



void showContrl(){
    //在oled屏幕显示温度和湿度
    OLED_Clear();
    OLED_ShowString(0,0,"Temp: C",12);
    OLED_ShowString(0,15,"Humi: %",12);
    OLED_Refresh_Gram();//更新显存到LCD	
    OLED_ShowNum(5*6,0,targetData.temp,2,12);
    OLED_ShowNum(5*6,15,targetData.humi,2,12);
    OLED_Refresh_Gram();//更新显存到LCD	
}
void alarmContrl(){
    u8 beepflag =0;
    if (targetData.temp<thData.tempMin||targetData.temp>thData.tempMax)
    {
        //点亮第一个led灯
        LED1=0;
        beepflag=1;
    }else{
        LED1=1;
    }
    if (targetData.humi<thData.humiMin||targetData.humi>thData.humiMax)
    {
        //点亮第一个led灯
        LED2=0;
        beepflag=1;
    }else{
        LED2=1;
    }
    if (targetData.smoke>thData.smoke)
    {
        //点亮第一个led灯
        LED3=0;
        beepflag=1;
    }else{
        LED3=1;
    }
    if (targetData.sunshine>thData.sunshine)
    {
        //点亮第一个led灯
        LED4=0;
        beepflag=1;
    }else{
        LED4=1;
    }
    //雨水的
    if (!targetData.raidrop)
    {
        //点亮第一个led灯
        LED5=0;
        beepflag=1;
    }else{
        LED5=1;
    }
		 if(!beepflag){
        beep=1;//不响
    }else{
    while(1){
			beepAlarm(100,50);
		  delay_us(100);
		}
	}
}
//空调  控制 发送红外信息
void airContrl(){

}
void curtainContrl(){

}


